An array is a collection of elements of the same data type stored in contiguous memory locations. A pointer, on the other hand, is a variable that stores the memory address of another variable. While an array has a fixed size, a pointer can be reassigned to point to different memory locations.